package fun.tan90.easy.binlog.manager.service;

import com.mybatisflex.core.service.IService;
import fun.tan90.easy.binlog.base.convention.Res;
import fun.tan90.easy.binlog.base.convention.page.SimplePage;
import fun.tan90.easy.binlog.manager.model.cmd.BinlogOutputAddCmd;
import fun.tan90.easy.binlog.manager.model.vo.BinlogOutputInfoVo;
import fun.tan90.easy.binlog.manager.dataobject.BinlogOutput;
import fun.tan90.easy.binlog.manager.model.cmd.BinlogOutputPageCmd;
import fun.tan90.easy.binlog.manager.model.cmd.BinlogOutputUpdateCmd;
import fun.tan90.easy.binlog.manager.model.vo.BinlogOutputPageVo;

/**
 * 服务层。
 *
 * @author 陈浩杰
 * @since 2023-09-12
 */
public interface BinlogOutputService extends IService<BinlogOutput> {

    /**
     * 输出方式分页
     *
     * @param pageCmd
     * @return
     */
    Res<SimplePage<BinlogOutputPageVo>> paging(BinlogOutputPageCmd pageCmd);

    /**
     * 输出方式详情
     *
     * @param id
     * @return
     */
    BinlogOutputInfoVo info(String id);

    /**
     * 新增输出方式
     */
    String addBinlogOutput(BinlogOutputAddCmd addCmd);

    /**
     * 修改输出方式
     *
     * @param updateCmd
     */
    void updateBinlogOutput(BinlogOutputUpdateCmd updateCmd);

    /**
     * 切换输出方式状态
     *
     * @param id
     */
    void switchBinlogOutputStatus(String id);

    /**
     * 删除输出方式
     *
     * @param id
     */
    void delBinlogOutput(String id);

    /**
     * @param outputType
     * @param params
     * @return
     */
    String test(String outputType, String params);
}
